In a nonvolatile semiconductor memory, it is required or at least preferable to reduce the number of times data is written to and erased from the memory so that the reliability of storage device can be maintained and read/write performance can be improved. Furthermore, from the perspective of cost and power consumption, it is important to limit the circuit size of a memory controller in a semiconductor storage device.